maybeGetSignalTracker(obj) {
return this._signalTrackers.get(obj) ?? null;
}
+
+ /*
+ * @param {Object} obj - object to remove signal tracker for
+ * @returns {void}
+ */
+ removeSignalTracker(obj) {
+ this._signalTrackers.delete(obj);
+ }
}
class SignalTracker {
this._disconnectSignalForProto(this._getObjectProto(obj), obj, id);
}
+ _removeTracker() {
+ if (this._ownerDestroyId)
+ this._disconnectSignal(this._owner, this._ownerDestroyId);
+
+ SignalManager.getDefault().removeSignalTracker(this._owner);
+
+ delete this._ownerDestroyId;
+ delete this._owner;
+ }
+
/**
* @param {Object} obj - tracked object
* @param {...number} handlerIds - tracked handler IDs
this._disconnectSignalForProto(ownerProto, this._owner, id));
if (destroyId)
this._disconnectSignal(obj, destroyId);
+
+ if (this._map.size === 0)
+ this._removeTracker();
}
/**
*/
destroy() {
this.clear();
-
- if (this._ownerDestroyId)
- this._disconnectSignal(this._owner, this._ownerDestroyId);
-
- delete this._ownerDestroyId;
- delete this._owner;
+ this._removeTracker();
}
}